[Auth0] ActionsのTrigger、Forms、Libraryを使ってできることを調べてまとめてみた

[Auth0] ActionsのTrigger、Forms、Libraryを使ってできることを調べてまとめてみた

Clock Icon2024.12.20

こんにちは。

ゲームソリューション部/業務効率化ソリューション部の西川です。
前回執筆した下記のブログで、Actions周りを触ってログインフローをカスタマイズしました。
https://dev.classmethod.jp/articles/auth0-actions-forms-slack-notification/

今回はもう少し深堀りして、Actionsを利用することでどんなことができるのか調べましたので、まとめます。
Auth0利用中または、検討中の方のご参考になれば幸いです。

用語

Auth0

Auth0は、認証・認可を簡単に実装できるIDaaS(Identity as a Service)プラットフォームです。

Actions

Actionsは、認証フローのカスタマイズを可能にする機能です。
Actionsを使うことで、特定のタイミングでカスタムロジックを実行したり、外部サービスと連携したりすることができます。

Actionsを構成する主な要素として、Trigger、Forms、Libraryの3つの要素があります。
これらを組み合わせることで、認証フローのカスタマイズが可能になります。

Trigger

Triggerは、認証フローの特定のタイミングでカスタムロジックを実行するためのポイントを提供します。
以下のようなTriggerが用意されています。

  • pre-user-registration: ユーザー登録の直前に実行されます。登録データの検証や、外部サービスとの連携によるデータ補完が行えます。
  • post-user-registration: ユーザー登録の後に非同期で実行されます。
  • post-login: ユーザーがログインした直後に実行されます。ログイン後にユーザーの属性をチェックして、特定の条件を満たす場合に外部APIを呼び出すといった処理が行えます。

Triggerを活用することで、認証フローの各ステップに応じた柔軟な処理を実現できます。

UIとしては以下のようになっており、UIベースで手軽に認証フローのカスタマイズを行えます。
スクリーンショット 2024-12-19 17.32.52

Forms

Formsは、ユーザーにカスタムUIを提供するための仕組みです。たとえば、以下のようなシナリオでFormsを活用できます。

  • 追加情報の入力フォーム: ユーザー登録時に、デフォルトの項目に加えて、独自の項目(例:電話番号や住所)を入力させるフォームを作成できます。
  • 利用規約の同意: 利用規約の同意画面のフォーム作成することで、ユーザー登録時に規約への同意を促すことが可能です。

Formsを使うことで、ユーザー体験を向上させるだけでなく、ビジネス要件に応じた柔軟なUIを構築できます。

UIとしては以下のようになっており、こちらもUIベースで手軽にカスタムUIなどの追加を行えます。
スクリーンショット 2024-12-19 17.38.15

Library

Libraryは、Actions内で利用する外部ライブラリやカスタムコードを管理する仕組みです。これにより、コードの再利用性を高めたり、外部サービスとの連携を簡単に実現したりすることができます。

  • 外部ライブラリの利用: npmパッケージをインポートして、Actions内で使用することができます。たとえば、暗号化ライブラリを使ってデータを暗号化したり、HTTPクライアントライブラリを使って外部APIを呼び出したりすることが可能です。
  • サードパーティ製品との統合を行える: マーケットプレイス統合を利用してAmazon SNSなどのサードパーティ製品と統合することが可能です。

Libraryを活用することで、より効率的でスケーラブルな認証フローを構築できます。

UIとしては以下のようになっており、カスタムコードを実際に実装し、管理することができます。
スクリーンショット 2024-12-19 17.39.56

ユースケース

Actionsの機能を組み合わせて、どのようなことができるのか、考えられるユースケースを紹介します。

ユースケース1: ユーザーのプロファイルの収集

シナリオ
新規登録時に、デフォルトの登録情報(メールアドレス、パスワード)に加えて、ユーザーの趣味や職業などの追加情報を登録する。
上記でご紹介した前回執筆したブログでのカスタマイズ内容と同じようなユースケースになります。

実現方法
Forms:
ユーザー登録後にカスタムフォームを表示し、趣味や職業などの追加情報を入力させるFormを作成。
Library:
ログインユーザのログイン回数などの条件などを利用して、初回ログイン時のみFormsにて作成したカスタムフォームを表示するように実装。
Trigger:
post-loginトリガーを使用して、ユーザーログイン時に作成したFormを表示するようにフローを設定。

結果
ユーザー登録時に必要な情報を柔軟に収集し、マーケティングや営業活動に活用可能。

ユースケース2: エラーハンドリングと通知

シナリオ
ログイン失敗時に、失敗理由に応じたカスタムエラーメッセージを表示し、特定の条件(例: 短時間での複数回失敗)を満たす場合は管理者に通知を送る。

実現方法
Forms:
ユーザーに対して、失敗理由に応じたカスタムエラーメッセージを表示(例: 「パスワードが間違っています」「アカウントがロックされています」など)。
Library:
短時間での複数回ログイン失敗を検知するロジックを実装。
管理者に通知を送るための外部サービス(例: Slackやメール送信API)と連携。
Trigger:
post-loginトリガーを使用して、ログイン失敗時のエラーログを取得。

結果
ユーザーに適切なエラーメッセージを提供しつつ、不正アクセスの兆候を管理者に通知することで、セキュリティを強化。

このように、Actionsを活用することで認証フローを単なるセキュリティ機能としてだけでなく、ビジネス要件やユーザー体験を向上させるための重要な要素として活用できます。

使用上の注意点

Actionsを利用するうえでの注意点などをまとめました。

トリガーの制約

Triggerは、Auth0が提供する特定のタイミングでのみ実行されます。そのため、タイミングの処理などを細かくカスタマイズすることはTriggerから行う事ができません。
細かくカスタマイズしたい場合はActionsではなく、アプリケーション内などでて実装していく必要があるかと思います。

長時間実行される処理

Actionsの実行時間はデフォルトで最大20秒に制限されています。これを超える処理はタイムアウトします。
細かい制限などについては下記をご参考ください。
https://auth0.com/docs/customize/actions/limitations

複雑なUIロジック

Formsは基本的なフォームのカスタマイズに適しており、複雑なUI(動的な要素の追加、リアルタイムのフィードバック、ドラッグ&ドロップなど)、バリデーションなどは実現できません。(2024/12/20 現在)
これらを実装する場合は、現状SDKなどを利用して手実装していく必要があります。

さいごに

Auth0のActionsは、Trigger、Forms、Libraryという3つの要素を組み合わせることで、認証フローを柔軟にカスタマイズできる強力なツールです。
Library、Triggerを使えば認証フローの各ステップでカスタムロジックを実行でき、Formsを使えばユーザー体験を向上させるカスタムUIを手軽に提供できます。
更に細かいカスタマイズを行いたい場合などは、SDKを利用した実装なども組み合わせて行うことで幅広く、コストを削減しながら要件を満たすことが可能かと考えられます。

このようにAuth0を使った認証フローのカスタマイズは、セキュリティを確保しつつ、ビジネス要件に応じた柔軟な対応が可能です。
ぜひ、Actionsを活用して、より良いユーザー体験を提供してみてください。

Auth0利用中や検討中の方のご参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.